package com.java.udpsocket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;

public class ClientThread extends Thread {

	private DatagramSocket socket;

	@Override
	public void run() {

		try {
			// DatagramPacket的初始化
			socket = new DatagramSocket();
			/**
			 * 客户端发送消息
			 */
			// 将所要传输的消息上传到网络
			String str11 = "你好，我是客户端！";
			// 将需要发送的消息打包到DatagramPacket数据包中
			DatagramPacket dp = new DatagramPacket(str11.getBytes(), 0, str11.getBytes().length,
					new InetSocketAddress("10.96.102.94", 8855));
			// 使用DatagramSocket发送数据包到网络
			socket.send(dp);
			// 输出信息
			System.out.println("客户端发送消息：" + str11);
			/**
			 * 客户端接收消息
			 */
			// 客户端的DatagramSocket创建一个用于接收服务器端的DatagramPacket
			// 也就是，客户端使用DatagramPacket来接收服务器端发送的消息内容
			// 创建一个DatagramPacket使用的字节数组
			byte[] b = new byte[1024];
			// 使用DatagramPack来接收信息
			DatagramPacket dpreceive = new DatagramPacket(b, b.length);
			socket.receive(dpreceive);
			// 获取本次接收的信息的字节的个数
			int len = dpreceive.getLength();
			// 将数组转换为String形式输出
			String strreceive1 = new String(b, 0, len);
			System.out.println("客户端接收到的信息为：" + strreceive1);

		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
